﻿using Storytelling.Entidades;
using System.ComponentModel.DataAnnotations;

namespace Storytelling.Modelos
{
    public class ArmaFormModel : InativoFormModel<Arma>
    {
        [Required]
        [Range(1, 10, ErrorMessage = "O Dano deve ser de 1 a 10")]
        [Display(Name = "Dano")]
        public virtual int Dano
        {
            get { return Entidade.Dano; }
            set { Entidade.Dano = value; }
        }

        [Range(1, 100, ErrorMessage = "A Munição deve ser de 1 a 100")]
        [Display(Name = "Munição")]
        public virtual int Municao
        {
            get { return Entidade.Municao; }
            set { Entidade.Municao = value; }
        }

        [Required]
        [Range(0, 5, ErrorMessage = "O Custo deve ser de 0 a 5")]
        [Display(Name = "Custo")]
        public virtual int Custo
        {
            get { return Entidade.Custo; }
            set { Entidade.Custo = value; }
        }

        [Required]
        [Range(0, 5, ErrorMessage = "O Tamanho deve ser de 0 a 5")]
        [Display(Name = "Tamanho")]
        public virtual int Tamanho
        {
            get { return Entidade.Tamanho.HasValue ? Entidade.Tamanho.Value : 0; }
            set { Entidade.Tamanho = value; }
        }

        [Required]
        [Range(1, 5, ErrorMessage = "A Força Mínima deve ser de 1 a 5")]
        [Display(Name = "Força Mínima")]
        public virtual int ForcaMinima
        {
            get { return Entidade.ForcaMinima; }
            set { Entidade.ForcaMinima = value; }
        }

        [Display(Name = "Câmara")]
        public virtual bool Camara
        {
            get { return Entidade.Camara; }
            set { Entidade.Camara = value; }
        }

        [Display(Name = "Alcance")]
        public virtual int Alcance
        {
            get { return Entidade.Alcance.HasValue ? (int)Entidade.Alcance.Value : 0; }
            set { Entidade.Alcance = (Alcance)value; }
        }

        [Required]
        [Display(Name = "Tipo de Dano")]
        public virtual int TipoDano
        {
            get { return Entidade.TipoDano.HasValue ? (int)Entidade.TipoDano.Value : 0; }
            set { Entidade.TipoDano = (TipoDano)value; }
        }

        [Display(Name = "Observação")]
        [StringLength(1000, MinimumLength = 5)]
        public virtual string Observacao
        {
            get { return Entidade.Observacao; }
            set { Entidade.Observacao = value; }
        }
    }
}
